package com.tea.config.wx;

import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import com.tea.Model.Order;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Slf4j
@Configuration
public class WxMaConfiguration {

    @Value("${wx.pay.appid}")
    private String appid;

    @Value("${wx.pay.secret}")
    private String secret;



    // 初始化微信服务
    @Bean
    public WxMaService wxMaService() {
        WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
        config.setAppid(appid);
        config.setSecret(secret);

        WxMaService service = new WxMaServiceImpl();
        service.setWxMaConfig(config);
        return service;
    }

    /**
     * 发送订阅消息给管理员
     * @param openId 管理员的OpenID
     * @param order 订单信息（用于填充模板字段）
     */
    public  void send(Order order) throws Exception {

        String templateId = "-FT-aI86U9rtQ2hfzndtdlZSk_XoJsbZiMBZlcYz3RU";


        WxMaService wxMaService = wxMaService();
        WxMaSubscribeMessage message = new WxMaSubscribeMessage();
        message.setToUser(order.getOpenId()); // 接收者OpenID（管理员）
        message.setTemplateId(templateId); // 模板ID
        // 填充模板字段（根据模板定义的字段名设置，顺序需与模板一致）
        message.setPage("/pages/order?orderNo=" + order.getId()); // 点击消息跳转的页面

        // 填充模板字段
        // 注意：MsgData的构造参数是字段名和字段值
        message.addData(new WxMaSubscribeMessage.MsgData("amount1", order.getAmount().toString())); // 支付金额
        message.addData(new WxMaSubscribeMessage.MsgData("date3", order.getCreateTime().toString())); // 支付时间
        message.addData(new WxMaSubscribeMessage.MsgData("thing4",  "商品详情示例")); // 商品详情
        message.addData(new WxMaSubscribeMessage.MsgData("thing7", order.getRemark())); // 备注
        // 发送消息
        wxMaService.getMsgService().sendSubscribeMsg(message);
    }

}